package com.demo.leetcode;

import java.util.HashSet;
import java.util.Set;

public class leetcode03 {
    /**
     * 给定一个字符串，找出不含有重复字符的 最长子串 的长度。
     * 示例：
     * 给定 `"abcabcbb"` ，没有重复字符的最长子串是 `"abc"` ，那么长度就是3。
     * 给定 `"bbbbb"` ，最长的子串就是 `"b"` ，长度是1。
     * 给定 `"pwwkew"` ，最长子串是 `"wke"` ，长度是3。请注意答案必须是一个 子串 ， `"pwke"` 是 _子序列_ 而不是子串。
     */
    public static int longestLength(String s) {
        if (s == null || "".equals(s)) {
            return 0;
        }
        int length = 0;
        for (int i = 0; i < s.length(); i++) {
            for (int j = i + 1; j < s.length(); j++) {
                boolean unique = allUnique(s, i, j);
                if (unique) {
                    length = Math.max(length, (j - i + 1));
                }
            }
        }
        return length;
    }


    public static boolean allUnique(String s, int start, int end) {
        if (s == null || "".equals(s)) {
            return false;
        }
        Set<Character> set = new HashSet();
        for (int i = start; i <= end; i++) {
            if (set.contains(s.charAt(i))) {
                return false;
            }
            set.add(s.charAt(i));
        }
        return true;
    }

    public static void main(String[] args) {
        int longestLength = longestLength("abcabc");
        System.out.println(longestLength);
    }


}
